package edu.uoc.tds.pec4.vista;

import edu.uoc.tds.pec4.model.SS1_TipoEvento;
import edu.uoc.tds.pec4.util.ExceptionUtils;
import edu.uoc.tds.pec4.util.LanguageUtils;
import edu.uoc.tds.pec4.vista.base.JPanelBase;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.rmi.RemoteException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 * Tecnicas de Desarrollo de Software - (UOC)
 *
 * @author Grupo Magicsoftware
 * @version 1.0
 */
public class SS1_PanelGestionarTipoEvento extends JPanelBase {
    private SS4_PantallaMenu padre;
    private JButton jb_aceptar;
    private JButton jb_cancelar;
    private ArrayList<JLabel> labels;
    private JTextField jtf_tipoEvento;
    private JTextArea jta_descripcion;
    private JRadioButton rb_rol1;
    private JRadioButton rb_rol2;
    private JRadioButton rb_rol3;
    private JRadioButton rb_rol4;

    public SS1_PanelGestionarTipoEvento(SS4_PantallaMenu padre) {
        super(new BorderLayout());
        this.padre = padre;
        iniciarComponentes();
    }

    private void iniciarComponentes(){
        jb_aceptar = new JButton(LanguageUtils.getMessage
                ("SS1.Aceptar"));
        jb_aceptar.setFocusable(false);
        jb_cancelar = new JButton(LanguageUtils.getMessage
                ("SS1.Cancelar"));
        jb_cancelar.setFocusable(false);
        JPanel pSur = new JPanel();
        pSur.add(jb_aceptar);
        pSur.add(jb_cancelar);
        add(pSur, BorderLayout.SOUTH);

        labels = new ArrayList<JLabel>();
        for (int i = 0; i < 3;i++){
            JLabel l = new JLabel(LanguageUtils.getMessage
                ("SS1_PanelGTE.label" + i));
            l.setFocusable(false);
            labels.add(l);
        }

        jtf_tipoEvento = new JTextField(50);
        jta_descripcion = new JTextArea(8, 50);
        jta_descripcion.setLineWrap(true);
        jta_descripcion.setWrapStyleWord(true);
        rb_rol1 = new JRadioButton(LanguageUtils.getMessage("SS1.TipoRol1"));
        rb_rol1.setFocusable(false);
        rb_rol2 = new JRadioButton(LanguageUtils.getMessage("SS1.TipoRol2"));
        rb_rol2.setFocusable(false);
        rb_rol3 = new JRadioButton(LanguageUtils.getMessage("SS1.TipoRol3"));
        rb_rol3.setFocusable(false);
        rb_rol4 = new JRadioButton(LanguageUtils.getMessage("SS1.TipoRol4"));
        rb_rol4.setFocusable(false);

        JPanel pCentro = new JPanel(new GridLayout(0, 1));
        ArrayList<JPanel> paneles = new ArrayList<JPanel>();
        for (int i = 0; i < 4; i++) {
            paneles.add(new JPanel());
        }
        paneles.get(1).add(labels.get(0));
        paneles.get(1).add(jtf_tipoEvento);
        paneles.get(2).add(labels.get(1));
        paneles.get(2).add(jta_descripcion);
        paneles.get(3).add(labels.get(2));
        paneles.get(3).add(rb_rol1);
        paneles.get(3).add(rb_rol2);
        paneles.get(3).add(rb_rol3);
        paneles.get(3).add(rb_rol4);

        for (int i = 0; i < paneles.size(); i++) {
            pCentro.add(paneles.get(i));
        }
        add(pCentro, BorderLayout.CENTER);
        jb_aceptar.addActionListener(padre);
        jb_cancelar.addActionListener(padre);
    }

    @Override
    public void componentePulsado(ActionEvent e) {
        if (e.getSource() == jb_aceptar){
            try {
                SS1_TipoEvento tipoEvento = getTipoEvento();
                    if (tipoEvento != null) {
                        padre.getRemotoMantenimiento().insertTipoEvento(tipoEvento);
                        padre.setPanelCentral(new SS4_PanelInicial());
                    }
            } catch (SQLException ex) {
                ExceptionUtils.visualizarError(LanguageUtils.getMessage("ERR_SQL"));
            } catch (RemoteException ex) {
                ExceptionUtils.visualizarError(LanguageUtils.getMessage("ERR_Remote"));
            }
        } else if (e.getSource() == jb_cancelar){
            padre.setPanelCentral(new SS4_PanelInicial());
        }
    }
    
    private SS1_TipoEvento getTipoEvento(){
        SS1_TipoEvento tipoEvento = new SS1_TipoEvento();
        
        if (isNotNull(jtf_tipoEvento, labels.get(0))){
            tipoEvento.setTitulo(jtf_tipoEvento.getText());
        } else return null;
            
        tipoEvento.setDescripcionAmpliada(jta_descripcion.getText());
        if (!rb_rol1.isSelected() && !rb_rol2.isSelected() &&
                !rb_rol3.isSelected() && !rb_rol4.isSelected()){
            ExceptionUtils.visualizarInformacion(LanguageUtils.getMessage("SS1_Mensaje1"));
            return null;
        }
        tipoEvento.setRol_alumno(rb_rol1.isSelected());
        tipoEvento.setRol_docente(rb_rol2.isSelected());
        tipoEvento.setRol_empleado(rb_rol3.isSelected());
        tipoEvento.setRol_otro(rb_rol4.isSelected());
        tipoEvento.setActivo(true);
        tipoEvento.setFechaActividad(new Date(System.currentTimeMillis()));
        
        return tipoEvento;
    }

    private boolean isNotNull(JTextField tf, JLabel l){
        if (tf.getText().equals("") || tf.getText() == null){
            ExceptionUtils.visualizarInformacion(LanguageUtils.getMessage("SS1_Mensaje2") +
                    " " + l.getText().toUpperCase() + " " +
                    LanguageUtils.getMessage("SS1_Mensaje3"));
            return false;
        }
        return true;
    }
}
